
package ServicosDAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import Model.Emprestimo;
import Model.EmprestimoMidia;
import Model.Item;
import Model.Usuario;

public class EmprestimoMidiaDAO extends EmprestimoDAO {

	@Override
	public Emprestimo selecionarEmprestimo(Item item) {

		Connection conexao = new ConexaoDAO().getConnection();

		try {
			ResultSet rs;

			Emprestimo emprest = new EmprestimoMidia();

			String sql = "select * from emprestimo where cod_item='"
					+ item.getCod_item() + "' and dt_devolucao is null";

			PreparedStatement stmt = conexao.prepareStatement(sql);

			rs = stmt.executeQuery();

			if (rs != null) {

				while (rs.next()) {

					emprest.setId_emprestimo(Integer.parseInt(rs
							.getString("id_emprestimo")));
					emprest.getBibliotecario().setId_usuario(
							rs.getString("id_bibliotecario"));
					emprest.getUsuario().setId_usuario(
							rs.getString("id_usuario"));
					emprest.getItem().setCod_item(rs.getString("cod_item"));
					emprest.setDt_emprestimo(rs.getString("dt_emprestimo"));
					emprest.setDev_prevista(rs.getString("devolucao_prevista"));
					emprest.setDt_devolucao(rs.getString("dt_devolucao"));

				}

				stmt.close();
				conexao.close();

				return emprest;

			}
		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException();
		}

		return null;
	}




	@Override
	public List<Emprestimo> pesqEmprestimoAtrasados(Emprestimo emprestimo) {

		Connection conexao = new ConexaoDAO().getConnection();

		try {
			ResultSet rs;

			Emprestimo emprest = new EmprestimoMidia();
			List<Emprestimo> lista = new ArrayList<Emprestimo>();

			SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy");
			String data = format.format(new Date());

			String sql = "select * from emprestimo where id_usuario='"
					+ emprestimo.getUsuario().getId_usuario() + "'  and '"
					+ data + "' > devolucao_prevista and dt_devolucao is NULL";

			PreparedStatement stmt = conexao.prepareStatement(sql);

			rs = stmt.executeQuery();

			if (rs != null) {

				while (rs.next()) {

					emprest.setId_emprestimo(Integer.parseInt(rs
							.getString("id_emprestimo")));
					emprest.getBibliotecario().setId_usuario(
							rs.getString("id_bibliotecario"));
					emprest.getUsuario().setId_usuario(
							rs.getString("id_usuario"));
					emprest.getItem().setCod_item(rs.getString("cod_item"));
					emprest.setDt_emprestimo(rs.getString("dt_emprestimo"));
					emprest.setDev_prevista(rs.getString("devolucao_prevista"));
					emprest.setDt_devolucao(rs.getString("dt_devolucao"));

					lista.add(emprest);
				}

				stmt.close();
				conexao.close();

				return lista;

			}
		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException();
		}

		return null;
	}




	@Override
	public List<Emprestimo> pesqEmprestimosAtivos(Usuario usuario) {

		Connection conexao = new ConexaoDAO().getConnection();

		try {
			ResultSet rs;
			// Usuario user = new Usuario();
			Emprestimo emprestimo = null;
			List<Emprestimo> lista = new ArrayList<Emprestimo>();

			String sql = "select * from Emprestimo where id_usuario=? and dt_devolucao is NULL";

			PreparedStatement stmt = conexao.prepareStatement(sql);

			stmt.setString(1, usuario.getId_usuario());

			rs = stmt.executeQuery();

			if (rs != null) {

				while (rs.next()) {
					emprestimo = new EmprestimoMidia();

					emprestimo.setId_emprestimo(Integer.parseInt(rs
							.getString("id_emprestimo")));
					emprestimo.getBibliotecario().setId_usuario(
							rs.getString("id_bibliotecario"));
					emprestimo.getUsuario().setId_usuario(
							rs.getString("id_usuario"));
					emprestimo.getItem().setCod_item(rs.getString("cod_item"));
					emprestimo.setDt_emprestimo(rs.getString("dt_emprestimo"));
					emprestimo.setDev_prevista(rs
							.getString("devolucao_prevista"));
					emprestimo.setDt_devolucao(rs.getString("dt_devolucao"));

					lista.add(emprestimo);

				}

				stmt.close();
				conexao.close();

				return lista;

			}
		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException();
		}

		return null;

	}




	@Override
	public List<Emprestimo> selecionarEmprestimos(Usuario usuario) {

		Connection conexao = new ConexaoDAO().getConnection();

		try {
			ResultSet rs;
			// Usuario user = new Usuario();
			Emprestimo emprestimo = null;
			List<Emprestimo> lista = new ArrayList<Emprestimo>();

			String sql = "select * from Emprestimo where id_usuario=?";

			PreparedStatement stmt = conexao.prepareStatement(sql);

			stmt.setString(1, usuario.getId_usuario());

			rs = stmt.executeQuery();

			if (rs != null) {

				while (rs.next()) {
					emprestimo = new EmprestimoMidia();

					emprestimo.setId_emprestimo(Integer.parseInt(rs
							.getString("id_emprestimo")));
					emprestimo.getBibliotecario().setId_usuario(
							rs.getString("id_bibliotecario"));
					emprestimo.getUsuario().setId_usuario(
							rs.getString("id_usuario"));
					emprestimo.getItem().setCod_item(rs.getString("cod_item"));
					emprestimo.setDt_emprestimo(rs.getString("dt_emprestimo"));
					emprestimo.setDev_prevista(rs
							.getString("devolucao_prevista"));
					emprestimo.setDt_devolucao(rs.getString("dt_devolucao"));

					lista.add(emprestimo);

				}

				stmt.close();
				conexao.close();

				return lista;

			}
		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException();
		}

		return null;

	}




	public List<EmprestimoMidia> pesqEmprestimosAtivosMidias(Usuario usuario) {

		Connection conexao = new ConexaoDAO().getConnection();

		try {
			ResultSet rs;

			EmprestimoMidia emprestimoMidia = null;
			List<EmprestimoMidia> lista = new ArrayList<EmprestimoMidia>();

			String sql = "select * from emprestimo where id_usuario=? and dt_devolucao is NULL and cod_item in (select cod_item from midia)";

			PreparedStatement stmt = conexao.prepareStatement(sql);

			stmt.setString(1, usuario.getId_usuario());

			rs = stmt.executeQuery();

			if (rs != null) {

				while (rs.next()) {
					emprestimoMidia = new EmprestimoMidia();

					emprestimoMidia.setId_emprestimo(Integer.parseInt(rs
							.getString("id_emprestimo")));
					emprestimoMidia.getBibliotecario().setId_usuario(
							rs.getString("id_bibliotecario"));
					emprestimoMidia.getUsuario().setId_usuario(
							rs.getString("id_usuario"));
					emprestimoMidia.getItem().setCod_item(
							rs.getString("cod_item"));
					emprestimoMidia.setDt_emprestimo(rs
							.getString("dt_emprestimo"));
					emprestimoMidia.setDev_prevista(rs
							.getString("devolucao_prevista"));
					emprestimoMidia.setDt_devolucao(rs
							.getString("dt_devolucao"));

					lista.add(emprestimoMidia);

				}

				stmt.close();
				conexao.close();

				return lista;

			}
		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException();
		}

		return null;

	}

}
